What is @fast-csv/format?
The @fast-csv/format package is a powerful, fast, and flexible library for formatting CSV data in Node.js. It allows users to easily convert arrays or streams of objects into CSV format, supporting complex features like custom headers, transforming data, and more.
What are @fast-csv/format's main functionalities?
Formatting an array of objects to CSV
This feature allows you to easily convert an array of objects into a CSV string. The example demonstrates how to use the `writeToString` method to convert an array of objects into a CSV format string, including headers.
const { writeToString } = require('@fast-csv/format');
const rows = [
{ id: 'A1', name: 'John Doe' },
{ id: 'A2', name: 'Jane Doe' }
];
writeToString(rows, { headers: true })
.then(csvString => console.log(csvString));
Streaming data to CSV
This feature demonstrates how to stream data to a CSV file. It uses the `format` function to create a stream that formats objects into CSV format and pipes the output to a file. This is useful for handling large datasets or real-time data processing.
const { createWriteStream } = require('fs');
const { format } = require('@fast-csv/format');
const stream = format({ headers: true });
stream.pipe(createWriteStream('path/to/file.csv'));
stream.write({ id: 'A1', name: 'John Doe' });
stream.write({ id: 'A2', name: 'Jane Doe' });
stream.end();
Other packages similar to @fast-csv/format
csv-writer
csv-writer is another npm package for generating CSV files. It provides a similar functionality to @fast-csv/format, allowing for the creation of CSV files from arrays or objects. However, @fast-csv/format offers more flexibility in terms of streaming and transforming data before writing.
papaparse
Papa Parse is a comprehensive CSV library that can parse CSV files or strings into JSON and vice versa. While it is more known for its parsing capabilities, it also supports CSV writing. Compared to @fast-csv/format, Papa Parse offers a wider range of parsing features but might not match the specific formatting and streaming capabilities of @fast-csv/format.